#include "commonheader.h"
#include "ISProto.h"
#include "utility.h"

string GetItemInfos(const ::google::protobuf::RepeatedPtrField<ItemInfo> & vecItemInfo, ::google::protobuf::RepeatedPtrField<ItemPosInfo> & vecNewPos)
{

    ostringstream oss;

    if (vecItemInfo.size() == 0)
        return ";";

    for (int i=0; i < vecItemInfo.size(); i++)
    {
        if (i < vecNewPos.size())
            oss << GetItemInfo(&(vecItemInfo.Get(i).baseinfo()), &(vecNewPos.Get(i))) << ';';
        else
            oss << GetItemInfo(&(vecItemInfo.Get(i).baseinfo())) << ';';
    }

    return oss.str();
}

string GetItemInfos(const ::google::protobuf::RepeatedPtrField<ItemBaseInfo> & vecItemBaseInfo, ::google::protobuf::RepeatedPtrField<ItemPosInfo> & vecNewPos)
{
    ostringstream oss;

    if (vecItemBaseInfo.size() == 0)
        return ";";

    for (int i=0; i < vecItemBaseInfo.size(); i++)
    {
        if (i < vecNewPos.size())
            oss << GetItemInfo(&(vecItemBaseInfo.Get(i)), &(vecNewPos.Get(i)))<<';';
        else
            oss << GetItemInfo(&(vecItemBaseInfo.Get(i)))<<';';
    }

    return oss.str();
}

string GetItemInfo(const ItemBaseInfo * pstItemInfo, const ItemPosInfo* pstNewPos)
{
    ostringstream oss;

    if (NULL == pstItemInfo)
    {
        return string("");
    }

    oss << pstItemInfo->entityid()              << ','
        << pstItemInfo->type()                  << ','
        << pstItemInfo->count()                 << ','
        << pstItemInfo->pos().containertype()   << ','
        << pstItemInfo->pos().slot();

    if (NULL != pstNewPos)
    {
        oss << ',' << pstNewPos->containertype()
            << ',' << pstNewPos->slot();
    }
    return oss.str();
}
